Skill Overview

537 字

“OpenClaw Skill 开发模板”,直接复制到工作区就能开始编写自己的 Skill。
它基于官方的 skill-creator 规范,结构固定,几乎所有自定义功能都可以在这里实现。
1️⃣ 目录结构(推荐放在 ~/.openclaw/workspace/skills/your‑skill-name/)
your-skill-name/

├─ SKILL.md ← 入口说明文件(必需)
├─ package.json ← npm 包描述(可选,但建议,有助于依赖管理)
├─ index.js ← 主入口脚本(export 一个 async function run(context))
├─ lib/ ← 业务代码、工具函数(如果比较多可以拆这里)
│ └─ …
└─ README.md ← 使用说明、示例(可选)
关键文件内容
SKILL.md(必须,告诉 OpenClaw 这个 Skill 能干什么)


name: your-skill-name
description: |
简要描述本 skill 的功能,例:从网页抓取物流资讯并写入飞书多维表格。
version: 0.1.0
author: 你的名字 you@example.com
license: MIT


Skill Overview

功能概述

  • 说明本 skill 的主要用途和使用场景。

入口

  • 入口文件index.js
  • 导出函数run(context)

参数 (可选)

参数 类型 必须 说明
url string 要抓取的页面 URL
count number 抓取条目数量,默认 10
## 示例调用
```json
{
"action": "run",
"skill": "your-skill-name",
"params": {
"url": "https://example.com/news",
"count": 20
}
}
依赖
如果需要额外 npm 包,列在 package.json 中,OpenClaw 会在安装时自动 npm install。
版权
遵循 MIT(或自行选择)许可证。```
package.json(可选,但强烈建议)
{
"name": "your-skill-name",
"version": "0.1.0",
"description": "从网页抓取物流资讯并写入飞书多维表格",
"main": "index.js",
"scripts": {
"test": "node test.js"
},
"author": "你的名字 you@example.com",
"license": "MIT",
"dependencies": {
"axios": "^1.7.0",
"cheerio": "^1.0.0"
}
}
index.js(核心业务逻辑)
// index.js – OpenClaw Skill 主入口
// 必须导出一个 async function run(context)

const axios = require('axios');
const cheerio = require('cheerio');

/*
* @param {object} context - OpenClaw 传入的执行上下文
* context.params → 传入的参数对象
* context.tools → 已注册的工具(如 feishu_doc、feishu_chat 等)
/
module.exports.run = async function (context) {
const { url = 'http://www.chinawuliu.com.cn/zixun/', count = 10 } = context.params || {};

// 1️⃣ 抓取页面
const resp = await axios.get(url);
const $ = cheerio.load(resp.data);

// 2️⃣ 解析条目(这里以站点实际结构为例,可能需要自行调节)
const items = [];
$('li a').each((i, el) => {
if (items.length >= count) return false;
const title = $(el).text().trim();
const link = $(el).attr('href');
items.push({ title, link });
});

// 3️⃣ 生成 CSV 内容(日期、公司名、主要内容、重要性)
const rows = items.map(item => {
const date = new Date().toISOString().split('T')[0];
const company = /[\u4e00-\u9fa5]+(?:公司|集团|企业|股份)/.exec(item.title)?.[0] || '';
const importance = /重点|要闻|发布|通知/.test(item.title) ? 'high' :
/更新|资讯/.test(item.title) ? 'medium' : 'low';
return ${date},${company},${item.title},${importance};
});

const csv = 日期,公司名,主要内容,重要性\n${rows.join('\n')};

// 4️⃣ 写入飞书多维表格(bitable)
// 这里示例使用 feishu_bitable(已在插件中注册),如果你没有创建表格,请先在飞书创建一个空的 Bitable 并记下 token。
const BitableToken = 'YOUR_BITABLE_TOKEN'; // ← 替换为你的表格 token
const { feishu_bitable } = context.tools;
await feishu_bitable.createRecords({
token: BitableToken,
fields: rows.map(r => ({
日期: r.split(',')[0],
公司名: r.split(',')[1],
主要内容: r.split(',')[2],
重要性: r.split(',')[3]
}))
});

// 5️⃣ 返回结果,方便在 UI 上展示
return {
success: true,
message: 已写入 ${rows.length} 条物流资讯到飞书多维表格,
csvPreview: rows.slice(0, 5).join('\n') + (rows.length > 5 ? '\n...' : '')
};
};
注意
feishu_bitable 是 Feishu 的多维表格 API(已在 OpenClaw 中实现)。如果你只想生成 CSV 并手动上传,也可以仅使用 fs.writeFile 写本地文件。
将 YOUR_BITABLE_TOKEN 换成你在飞书多维表格页面 “分享‑复制链接” 中的 token(如 bitable.cn/xxxxxx 中的 xxxxxx)。
2️⃣ 创建、安装、调试流程
创建目录 & 复制模板
安装依赖(如果有 package.json)
本地测试(可选)
在 my-logistics-skill 目录新建 test.js:
const skill = require('./index.js');
skill.run({ params: { count: 5 } })
.then(r => console.log(r))
.catch(e => console.error(e));
```bash
node test.js
在 OpenClaw 中注册
OpenClaw 会自动扫描 ~/.openclaw/workspace/skills/*/SKILL.md,因此只要文件存在即可使用。
在对话中直接调用:
调试
若出现 module not found,检查 package.json 是否在 skill 根目录并已执行 npm install。
通过 openclaw status 查看插件加载日志,确认 my-logistics-skill 已被识别。
使用 openclaw exec "feishu_bitable {\"action\":\"list\",\"token\":\"YOUR_TOKEN\"}" 验证表格 token 正常。
3️⃣ 常见 模板/格式 推荐
类型
推荐文件
说明
纯功能 Skill
SKILL.md, index.js
如上示例
CLI 包装
src/cli.js + bin/your-skill
用 npm link 可在终端直接调用
复杂业务
lib/ 目录 + services/、models/
把业务拆成模块,保持 index.js 只负责参数解析和调用
多语言
src/ + scripts/
若需要 Python、Shell,可在 scripts/ 放脚本,index.js 用 child_process.exec 调用
单元测试
tests/ + jest
npm test 运行,确保更新后不破坏功能
4️⃣ 参考官方 Skill 示例
feishu-doc、feishu-drive、feishu-perm:这些已在 ~/.npm-global/lib/node_modules/openclaw/extensions/feishu/skills/ 里,结构完全符合上述模板。
skill-creator:位于 ~/.npm-global/lib/node_modules/openclaw/skills/skill-creator/,专门用于创建/审计 Skill,你可以直接 clawhub install skill-creator 查看其实现细节。
小结
复制模板 → 目录结构 → 填写 SKILL.md、index.js。
安装依赖(如果有)并 本地测试。
保持 SKILL.md 正确,OpenClaw 会自动发现。
使用 openclaw exec / 对话 JSON 调用你的 Skill。
这样,你就拥有了一个 完整、可发布、可复用 的 OpenClaw Skill。后续如果想把它发布到 ClawHub,只需在根目录执行:
clawhub publish .

(需要先在 ClawHub 账户登录)。